/**
 * Created By xiyuan
 * Author server@xiyuan.name (惜缘叛逆)
 * DateTime 2018/11/5 16:17
 * Describe REM 布局自适应处理
 * MIT License http://www.opensource.org/licenses/mit-license.php
 */



/**
 * 初始化设计尺寸
 * @param e Window
 * @param t Document
 */
export function initDesignSize(window: Window, document: Document): void {
	// px2rem 换算基数
	const rootValue = 14;
	// 设计稿宽度
	const DesignWidth = __APP_DesignWidth__;
	// 设备像素比例
	const DPR = window.devicePixelRatio || 1;
	// 是否移动端
	const isMobile = /Android|webOS|iPhone|iPod|ipad|BlackBerry/i.test(navigator.userAgent);
	// 
	const documentElement = document.documentElement;
	// 移动端等平台则使用vw
	const mobileBaseFontSize = `${rootValue / DesignWidth * 100}vw`
	// html样式对象
	const htmlStyle = document.querySelector('html')!.style
	// body 样式对象
	const bodyStyle = document.body.style;


	function resetSize() {
		// 当前baseFontSize
		const baseFontSize = documentElement.style.fontSize;
		// 窗口宽度
		let windowWidth = document.documentElement.clientWidth;
		// 窗口需要使用的基础字体大小
		let windowBaseFontSize = mobileBaseFontSize;

		// 如果大窗口则就使用换算基数
		if (!isMobile && windowWidth > DesignWidth) {
			// 基础字体尺寸 （vw）
			windowBaseFontSize = `${rootValue}px`;
			// 设置页面宽度
			htmlStyle.width = DesignWidth + 'px';
		} else {
			document.querySelector('html')!.style.width = '100%';
		}

		if (baseFontSize !== windowBaseFontSize) {
			// 基础字体尺寸 （vw）
			documentElement.style.fontSize = windowBaseFontSize;
		}

		document.querySelector('html')!.classList.add(isMobile ? 'mobile' : 'pc');
	}

	resetSize();

	// 移动端dpr处理
	if (DPR >= 2) {
		var a = document.createElement("body"),
			s = document.createElement("div");
		s.style.border = ".5px solid transparent";

		a.appendChild(s);
		documentElement.appendChild(a);

		if (1 === s.offsetHeight) {
			documentElement.classList.add("hairlines");
		}
		documentElement.removeChild(a)
	}


	window.addEventListener("resize", resetSize);

	window.addEventListener("pageshow", function (e) {
		e.persisted && resetSize()
	});

}